<?php
/**
 * Created by PhpStorm.
 * User: lyq
 * Date: 2018/9/8
 * Time: 10:39
 */
namespace app\admin\model;


class Wallet extends Common{

    //钱包完整接口地址
    static public $api_url;
    //提交的数据
    static public $postdata;

    /**
     * 注册钱包
     * @param $mobile
     * @param $password
     * @return array
     */
    static public function walletRegis($mobile,$password){
        self::set_api_url('/commerce/getUserKind');
        $param_array=array(
            "username"=>$mobile,
            "code"=>base64_encode(base64_encode($password))
        );
        self::organize_params($param_array);
        return self::curl_post();
    }

    /**
     * 修改钱包密码
     * @param $mobile
     * @param $password
     * @return array
     */
    static public function setPassWord($mobile,$password){
        self::set_api_url('/commerce/setPassWord');
        $param_array=array(
            "username"=>$mobile,
            "code"=>base64_encode(base64_encode($password))
        );
        self::organize_params($param_array);
        return self::curl_post();
    }


    /**
     *获取商基因拥有量
     *
     * @param array $mobile_arr 手机号的一维数组
     */
    static public function someUser($mobile_arr=[]){
        self::set_api_url('/commerce/getBalances');
        $param_array = [
            'mobile'=>$mobile_arr,
            'notice'=>'none'
        ];
        self::organize_params($param_array);
        return self::curl_post();
    }

    /**
     *判断单个会员
     *
     * @param string $mobile 手机号
     */
    static public function oneUser($mobile=''){
        self::set_api_url('/commerce/usertrue');
        $param_array = [
            'mobile'=>$mobile
        ];
        self::organize_params($param_array);
        return self::curl_post();
    }

    /**
     * *获取会员区块链资产记录
     * @param $mobile
     * @param string $source 看下面 来源
     * @param  string $num  一页几条
     * @param  string $page 第几页
     * @return array
     */
    static public function hlHistory($mobile,$source='',$num,$page){
        self::set_api_url('/commerce/getDeal');
        $param_array = [
            'mobile'=>$mobile,
            'source'=>$source,
            'num'=>$num,
            'page'=>$page
        ];
        self::organize_params($param_array);
        return self::curl_post();
    }

    /**
     * 发送商基因
     * @param $mobile
     * @param $pwd
     * @param $balance
     * @param string $remark
     * @param $accounts
     * @return array
     */
    static public function transferBalance($mobile,$pwd,$balance,$remark='转出',$accounts){
        self::set_api_url('/commerce/transferBalance');
        $param_array = [
            "username"=>$mobile,
            "code"=>base64_encode(base64_encode($pwd)),
            "balance"=>$balance,
            "remark"=>$remark,
            "accounts"=>$accounts
        ];
        self::organize_params($param_array);
        return self::curl_post();
    }

    /**
     *给会员添加减区块链资产
     *
     * @param string $mobile 手机号
     * @param float $coin 加减资产量
     * @param int $type 1加2减
     * @param string $remark 备注
     * @param int $source 类型 1线上购物减少 2线上购物取消订单增加 3个人互转 4.提现 5分享经济 邀请的人消费或销售 返利  6.等级奖励 升级赠送 7.线下付款 8.线下付款取消 9.糖果兑换10.转化为回购余额
     * @param int $sourceid 来源id  订单id 或 提现id
     * @return array
     */
    static public function addDelCoin($mobile,$coin,$type,$remark='',$source,$sourceid){
        self::set_api_url('/commerce/setBalance');
        $param_array = [
            'code'=>base64_encode($mobile.','.$coin),
            'type'=>$type,
            'remark'=>$remark,
            'source'=>$source,
            'sourceid'=>$sourceid
        ];
        self::organize_params($param_array);
        return self::curl_post();
    }

    //筛选商基因记录source列表
    static public function getCoinSource(){
        $arr = [
            [
                'title'=>'线上购物使用',
                'source'=>'1',
                'img_url'=>'http://img.shangjiyin.com/source1.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'线上购物取消订单返还',
                'source'=>'2',
                'img_url'=>'http://img.shangjiyin.com/source2.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'个人互转',
                'source'=>'3',
                'img_url'=>'http://img.shangjiyin.com/source3.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'提现',
                'source'=>'4',
                'img_url'=>'http://img.shangjiyin.com/source4.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'分享经济',
                'source'=>'5',
                'img_url'=>'http://img.shangjiyin.com/source5.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'先锋奖励',
                'source'=>'6',
                'img_url'=>'http://img.shangjiyin.com/source6.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'线下付款',
                'source'=>'7',
                'img_url'=>'http://img.shangjiyin.com/source7.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'线下付款取消订单返还',
                'source'=>'8',
                'img_url'=>'http://img.shangjiyin.com/source8.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ],
            [
                'title'=>'兑换奖励',
                'source'=>'9',
                'img_url'=>'http://img.shangjiyin.com/source9.png',//app端显示图片
                'show_app'=>true//true 显示在app端可以筛选
            ]

        ];
        return $arr;
    }

    /**
     *拼接api地址
     *
     * @param string $action api地址中域名之外的具体方法名
     */
    static public function set_api_url($action){
        self::$api_url = config('wallet_url').$action;
    }

    /**
     *拼接参数
     *
     *@param array $param_array 参数数组
     */
    static public function organize_params($param_array){
        $time = time();
        $token = md5(md5(substr($time,3)));
        $param_array['time'] = $time;
        $param_array['token'] = $token;
        self::$postdata = json_encode($param_array);
    }

    /**
     *curl模拟post 访问
     * @return array
     */
    static function curl_post(){
        $res = curl_post(self::$api_url,self::$postdata);
        return json_decode($res,true);
    }
}